﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AI_Tank.Game
{
    class MapElementArray
    {
        /// <summary>
        /// 地图上墙，河水，金币，超级星星
        /// </summary>
        private Goods[,] mapElemArray = null;
        private int x;
        private int y;
        
        class Nothing :Goods
        {
            public Nothing(ElementType et)
            {
                base.setType(et);
            }
        }
        /// <summary>
        /// 代表地图元素为空
        /// </summary>

        //public MapElementArray(RoundData rd)
        //{
        //    x = GV.MapSize_X;
        //    y = GV.MapSize_Y;
        //    mapElemArray = new Goods[x,y];
        //    for(int i = 0; i < x; i++)
        //    {
        //        for(int j=0;j<y;j++)
        //        {
        //            mapElemArray[i,j] = new Nothing(ElementType.Nothing);
        //        }
        //    }
        //    for(int i = 0; i < rd.Brickwalls.Count; i++)
        //    {
        //        mapElemArray[rd.Brickwalls[i].Position.X, rd.Brickwalls[i].Position.Y] = rd.Brickwalls[i];
        //    }
        //    for(int i = 0; i < rd.Ironwalls.Count; i++)
        //    {
        //        mapElemArray[rd.Ironwalls[i].Position.X, rd.Ironwalls[i].Position.Y] = rd.Ironwalls[i];
        //    }
        //    for (int i = 0; i < rd.Rivers.Count; i++)
        //    {
        //        mapElemArray[rd.Rivers[i].Position.X, rd.Rivers[i].Position.Y] = rd.Rivers[i];
        //    }
        //    for (int i = 0; i < rd.Coins.Count; i++)
        //    {
        //        mapElemArray[rd.Coins[i].Position.X, rd.Coins[i].Position.Y] = rd.Coins[i];
        //    }
        //    for (int i = 0; i < rd.Stars.Count; i++)
        //    {
        //        mapElemArray[rd.Stars[i].Position.X, rd.Stars[i].Position.Y] = rd.Stars[i];
        //    }
        //}
        public Goods[,] GetMapElementArray()
        {
            return mapElemArray;
        }
        public int[,] GetIntMapElement()
        { 
            int[,] s = new int[x,y];

            for (int i = 0; i < x; i++)
            {
                for (int j = 0; j < y; j++)
                {
                    s[i, j] = 1;
                }
            }

            for (int i=0;i<x;i++)
            {
                for(int j = 0; j < y; j++)
                {
                    switch(mapElemArray[i,j].ElementType)
                    {
                        case ElementType.BrickWall:s[i,j]=0;break;
                        case ElementType.IronWall: s[i, j] = 0; break;
                        case ElementType.River: s[i, j] = 0; break;
                    }
                }
            }
            return s;
        }

    }
}
